모의해킹

호스트기반모의해킹_16_NFS 취약점 진단

작성자 : Heehyeon Yoo|2025-11-26
# 모의해킹# NFS# 권한 상승# Misconfiguration# no_root_squash

1. 개요

NFS(Network File System)는 리눅스/유닉스 환경에서 파일 및 디렉토리를 네트워크로 공유하는 프로토콜이다.

  • 포트: TCP/UDP 2049 (NFS 데몬), TCP/UDP 111 (Portmapper/RPCBind).
  • 특징: IP 주소 기반의 접근 제어(ACL)를 사용하며, 별도의 사용자 인증 과정이 없는 경우가 많다.

2. 주요 진단 항목

2.1 접근 제어 및 공유 목록 확인(Export List)

  • 목적: NFS 서버가 외부에 노출하고 있는 디렉토리와 접근 가능한 IP 대역을 확인한다.
  • 도구: showmount
    showmount -e [Target_IP]
    
    • 결과 예시: /home/user * (모든 IP 접근 가능 - 취약)

2.2 디렉토리 마운트 및 파일 접근

  • 방법: 공격자의 로컬 시스템에 NFS 공유를 마운트하여 파일을 열람하거나 변조한다.
    mkdir /tmp/nfs_test
    mount -t nfs [Target_IP]:/home/user /tmp/nfs_test
    

2.3 no_root_squash 취약점

  • 개념: NFS 서버 설정에서 no_root_squash 옵션이 활성화된 경우 발생한다.
    • 원리: 클라이언트(공격자) 측에서 root 권한으로 파일을 생성하면, 서버 측에서도 해당 파일의 소유자가 root로 유지된다.
  • 위협:
    1. 공격자는 로컬에서 root 권한으로 SUID 비트가 설정된 쉘(Shell) 파일(예: /bin/bash 복사본)을 공유 폴더에 생성한다.
    2. 서버 측에서 로컬 사용자가 이 파일을 실행하면 Root 권한 상승(Privilege Escalation)이 일어난다.

3. 실무에서는?

  1. RPCBind 포트(111):
    • NFS 뿐만 아니라 다양한 RPC 서비스 정보를 제공하므로, rpcinfo -p [Target_IP]를 통해 연관된 서비스를 넓게 파악해야 한다.
  2. IP 기반 인증의 한계:
    • /etc/exports 설정에서 *192.168.1.0/24 같은 넓은 대역을 허용하는 실수가 잦다. 사설망 내부라 해도 엄격한 IP 통제가 필요함을 강조해야 한다.
  3. SSH 키 탈취:
    • 가장 흔한 시나리오는 /home 디렉토리를 통째로 공유하여, 사용자 계정의 .ssh/id_rsa (개인키)를 탈취하고 SSH로 바로 접속하는 것이다.